一、构造函数
    1、函数语法
        function Star(unmae,age,sex) {
            this.name = uname;
            this.age = age;
            this.sex = sex;
            this.methods= function(sing) {
                console.log(sing)
            }
        }
        var ldh = new Star('pink','58','男');

        console.log(ldh.methods('冰雨'))    => 输出传进去的参数：冰雨

    注意：构造函数名第一个字母必须大写
    
二、数据的存储方式
    1、简单数据类型：值放在 栈；
        （1）形参和实参：互不影响
    2、复杂数据类型：地址放在 栈，值放在 堆; 栈 中的地址指向 堆（Object,Array,Date）
        （1）形参和实参：在函数中，改变形参会直接改变实参的对象（因为形参指向堆的地址是实参的地址；形参改变时，堆中存储的值也会改变）

三、类      学习地址：https://www.bilibili.com/video/BV17y4y1J7L1?p=4
    1、基本写法：
        class Star {
            constructor(uname,age) {
                this.uname = uname;
                this.age = age
            }
            sing(song) {
                console.log(song)
                console.log(this.uname + this.age)
            }
        }

        var ldh = new Star('刘德华','53')
        console.log(ldh.uname)      // 刘德华
      总结：
        （1）类名我们还是首字母大写
        （2）类里面有个constructor函数，可以接  受传递过来的参数，同时返回实例对象
        （3）constructor函数，只要生成实例，就会调用这个函数；哪怕不写这个函数，也会自动生成；不需要function
        （4）要写一个不同于constructor的函数方法；例子：sing函数；
        （5）在类中调用方法和变量，要加this.
    2、继承类：extend
        （1）基本写法：(没有函数constructor)
            class Father {
                money() {
                    console.log(100)
                }
            }
            
            // 继承父类
            class Son extend Father {}
            var son = new Son()
            son.money()         // 100
        （2）使用父类中的constructor函数
            class Father {
                constructor(uname,age) {
                    this.uname = uname;
                    this.age = age;
                }
                money() {
                    console.log(this.uname)
                }
            }


            // 继承父类
            class Son extend Father {
                constructor(x,y) {
                    super(x,y)      // 使用super才能继承父类中的constructor，并且把参数传过去
                }
            }
            var son = new Son("刘德华",98)
            son.money()

四、模块类型
    1、umd
    2、commonjs
    3、ES module
        参考网址：https://www.cnblogs.com/wntd/p/9013121.html
        基本使用：
        (1)全部导出：export default；只能使用一次 
            整体加载：import xxx from xxx;
        (2)对象导出：export xxx;可以多次使用
            逐一加载：import {xxx,xxx} from xxx
            整体加载：import * as all from xxx; all是变量，随便起名（使用：all.methods1() ）